package com.irdstudio.efp.esb.api.bean.yx;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import com.alibaba.fastjson.annotation.JSONField;
import com.irdstudio.basic.framework.core.annotation.DicType;
import com.irdstudio.basic.framework.core.annotation.NumType;
import com.irdstudio.efp.esb.api.common.GroupeInterface.bd;
import com.irdstudio.efp.esb.api.common.GroupeInterface.ms;
import com.irdstudio.efp.esb.common.constant.bd.EventTypeEnum;
import com.irdstudio.efp.esb.common.constant.nls.ChanFlgEnum;
import com.irdstudio.efp.esb.common.constant.nls.CurrCdEnum;
import com.irdstudio.efp.esb.common.constant.nls.NlsCertTpEnum;
import com.irdstudio.efp.esb.common.constant.nls.NlsRpyMdEnum;

import javax.validation.constraints.NotNull;

/**
 * 用信放款通知 hello
  * @author heyingfeng
  * @since 2019年3月13日 下午4:42:06
  * @version 1.0
 */
public class ReqBraLoanBean {

	@JSONField(name = "AppFlowNo")
	@Length(max = 64)
	@NotEmpty
	private String appFlowNo;// 交易流水号
	
	@JSONField(name = "EvID")
	@Length(max = 4,groups= {bd.class})
	@NotEmpty
	@DicType(dicType = EventTypeEnum.class, method = "getValue")
	private String EvID;//	事务ID
	
	@JSONField(name = "VerNo")
	@Length(max = 32)
	@NotEmpty
	private String VerNo;//	版本号
	
	@JSONField(name = "Rmk")
	@Length(max = 1024)
	private String Rmk;//	备注
	
	@JSONField(name = "BsnOrdrNo")
	@Length(max = 32)
	@NotEmpty
	private String BsnOrdrNo;//	业务订单号
	
	@JSONField(name = "AcctDt")
	@Length(max = 10,groups= {bd.class})
	private String AcctDt;//	账务日期
	
	@JSONField(name = "TxnTmstmp")
	@Length(max = 14)
	@NotEmpty
	private String TxnTmstmp;//	交易时间戳
	
	@JSONField(name = "LeaderCd")
	@Length(max = 8)
	@NotEmpty
	private String LeaderCd;//	牵头方代码
	
	@JSONField(name = "PrtnrCd")
	@Length(max = 30)
	@NotEmpty
	private String PrtnrCd;//	合作方代码
	
	@JSONField(name = "CustNm")
	@Length(max = 200)
	@NotEmpty
	private String CustNm;//	客户姓名
	
	@JSONField(name = "CertTp")
	@NotEmpty
	@Length(max = 32)
	@DicType(dicType = NlsCertTpEnum.class, method = "getValue")
	private String CertTp;//	证件类型
	
	@JSONField(name = "CertNo")
	@Length(max = 18)
	@NotEmpty
	private String CertNo;//	证件号码
	
	@JSONField(name = "DblNo")
	@Length(max = 32)
	@NotEmpty
	private String DblNo;//	借据号
	
	@JSONField(name = "AplDt")
	@Length(max = 10,groups= {bd.class})
	@NotNull(groups= {bd.class})
	@NotEmpty(groups= {bd.class})
	private String AplDt;//	申请日期
	
	@JSONField(name = "CfrmDt")
	@Length(max = 10,groups= {bd.class})
	private String CfrmDt;//	确认日期
	
	@JSONField(name = "FrstRpyDt")
	@Length(max = 10,groups= {bd.class})
	private String FrstRpyDt;//	第一期还款日期
	
	@JSONField(name = "RpyDt")
	@Length(max = 10,groups= {bd.class})
	private String RpyDt;//	还款日期
	
	@JSONField(name = "RpyMateDt")
	@Length(max = 10,groups= {bd.class})
	private String RpyMateDt;//	还款到期日期
	
	@JSONField(name = "OrgAmt")
	@Length(max = 16)
	@NotEmpty
	@NumType
	private String OrgAmt;//	机构金额
	
	@JSONField(name = "CurrCd")
	@Length(max = 3)
	@NotEmpty
	@DicType(dicType = CurrCdEnum.class, method = "getValue")
	private String CurrCd;//	币种
	
	@JSONField(name = "RpyMd")
	@Length(max = 32)
	@DicType(dicType = NlsRpyMdEnum.class, method = "getValue")
	private String RpyMd;//	还款方式
	
	@JSONField(name = "RpyCyc")
	@Length(max = 1,groups= {bd.class} )
	private String RpyCyc;//	还款周期
	
	@JSONField(name = "TotRpyTerm")
	@Length(max = 2)
	private String TotRpyTerm;//	总还款期数
	
	@JSONField(name = "GrcTerm")
	@Length(max = 2)
	private String GrcTerm;//	宽限期
	
	@JSONField(name = "AmortTerm")
	@Length(max = 10)
	@NotEmpty
	private String AmortTerm;//	分期期数
	
	@JSONField(name = "StrtDt")
	@Length(max = 10,groups= {bd.class})
	@NotEmpty
	private String StrtDt;//	开始日期
	
	@JSONField(name = "MateDt")
	@Length(max = 10,groups= {bd.class})
	@NotEmpty
	private String MateDt;//	到期日期
	
	@JSONField(name = "LoanAmt")
	@Length(max = 16)
	private String LoanAmt;//	贷款金额
	
	@JSONField(name = "ChanFlg")
	@Length(max = 3)
	@NotEmpty
	@DicType(dicType = ChanFlgEnum.class, method = "getValue")
	private String ChanFlg;//	渠道标志
	
	
	
	/**
	 * @return the evID
	 */
	public String getEvID() {
		return EvID;
	}

	/**
	 * @param evID the evID to set
	 */
	public void setEvID(String evID) {
		EvID = evID;
	}

	/**
	 * @return the verNo
	 */
	public String getVerNo() {
		return VerNo;
	}

	/**
	 * @param verNo the verNo to set
	 */
	public void setVerNo(String verNo) {
		VerNo = verNo;
	}

	/**
	 * @return the rmk
	 */
	public String getRmk() {
		return Rmk;
	}

	/**
	 * @param rmk the rmk to set
	 */
	public void setRmk(String rmk) {
		Rmk = rmk;
	}

	/**
	 * @return the bsnOrdrNo
	 */
	public String getBsnOrdrNo() {
		return BsnOrdrNo;
	}

	/**
	 * @param bsnOrdrNo the bsnOrdrNo to set
	 */
	public void setBsnOrdrNo(String bsnOrdrNo) {
		BsnOrdrNo = bsnOrdrNo;
	}

	/**
	 * @return the acctDt
	 */
	public String getAcctDt() {
		return AcctDt;
	}

	/**
	 * @param acctDt the acctDt to set
	 */
	public void setAcctDt(String acctDt) {
		AcctDt = acctDt;
	}

	/**
	 * @return the txnTmstmp
	 */
	public String getTxnTmstmp() {
		return TxnTmstmp;
	}

	/**
	 * @param txnTmstmp the txnTmstmp to set
	 */
	public void setTxnTmstmp(String txnTmstmp) {
		TxnTmstmp = txnTmstmp;
	}

	/**
	 * @return the leaderCd
	 */
	public String getLeaderCd() {
		return LeaderCd;
	}

	/**
	 * @param leaderCd the leaderCd to set
	 */
	public void setLeaderCd(String leaderCd) {
		LeaderCd = leaderCd;
	}

	/**
	 * @return the prtnrCd
	 */
	public String getPrtnrCd() {
		return PrtnrCd;
	}

	/**
	 * @param prtnrCd the prtnrCd to set
	 */
	public void setPrtnrCd(String prtnrCd) {
		PrtnrCd = prtnrCd;
	}

	/**
	 * @return the custNm
	 */
	public String getCustNm() {
		return CustNm;
	}

	/**
	 * @param custNm the custNm to set
	 */
	public void setCustNm(String custNm) {
		CustNm = custNm;
	}

	/**
	 * @return the certTp
	 */
	public String getCertTp() {
		return CertTp;
	}

	/**
	 * @param certTp the certTp to set
	 */
	public void setCertTp(String certTp) {
		CertTp = certTp;
	}

	/**
	 * @return the certNo
	 */
	public String getCertNo() {
		return CertNo;
	}

	/**
	 * @param certNo the certNo to set
	 */
	public void setCertNo(String certNo) {
		CertNo = certNo;
	}

	/**
	 * @return the dblNo
	 */
	public String getDblNo() {
		return DblNo;
	}

	/**
	 * @param dblNo the dblNo to set
	 */
	public void setDblNo(String dblNo) {
		DblNo = dblNo;
	}

	/**
	 * @return the aplDt
	 */
	public String getAplDt() {
		return AplDt;
	}

	/**
	 * @param aplDt the aplDt to set
	 */
	public void setAplDt(String aplDt) {
		AplDt = aplDt;
	}

	/**
	 * @return the cfrmDt
	 */
	public String getCfrmDt() {
		return CfrmDt;
	}

	/**
	 * @param cfrmDt the cfrmDt to set
	 */
	public void setCfrmDt(String cfrmDt) {
		CfrmDt = cfrmDt;
	}

	/**
	 * @return the frstRpyDt
	 */
	public String getFrstRpyDt() {
		return FrstRpyDt;
	}

	/**
	 * @param frstRpyDt the frstRpyDt to set
	 */
	public void setFrstRpyDt(String frstRpyDt) {
		FrstRpyDt = frstRpyDt;
	}

	/**
	 * @return the rpyDt
	 */
	public String getRpyDt() {
		return RpyDt;
	}

	/**
	 * @param rpyDt the rpyDt to set
	 */
	public void setRpyDt(String rpyDt) {
		RpyDt = rpyDt;
	}

	/**
	 * @return the rpyMateDt
	 */
	public String getRpyMateDt() {
		return RpyMateDt;
	}

	/**
	 * @param rpyMateDt the rpyMateDt to set
	 */
	public void setRpyMateDt(String rpyMateDt) {
		RpyMateDt = rpyMateDt;
	}

	/**
	 * @return the orgAmt
	 */
	public String getOrgAmt() {
		return OrgAmt;
	}

	/**
	 * @param orgAmt the orgAmt to set
	 */
	public void setOrgAmt(String orgAmt) {
		OrgAmt = orgAmt;
	}

	/**
	 * @return the currCd
	 */
	public String getCurrCd() {
		return CurrCd;
	}

	/**
	 * @param currCd the currCd to set
	 */
	public void setCurrCd(String currCd) {
		CurrCd = currCd;
	}

	/**
	 * @return the rpyMd
	 */
	public String getRpyMd() {
		return RpyMd;
	}

	/**
	 * @param rpyMd the rpyMd to set
	 */
	public void setRpyMd(String rpyMd) {
		RpyMd = rpyMd;
	}

	/**
	 * @return the rpyCyc
	 */
	public String getRpyCyc() {
		return RpyCyc;
	}

	/**
	 * @param rpyCyc the rpyCyc to set
	 */
	public void setRpyCyc(String rpyCyc) {
		RpyCyc = rpyCyc;
	}

	/**
	 * @return the totRpyTerm
	 */
	public String getTotRpyTerm() {
		return TotRpyTerm;
	}

	/**
	 * @param totRpyTerm the totRpyTerm to set
	 */
	public void setTotRpyTerm(String totRpyTerm) {
		TotRpyTerm = totRpyTerm;
	}

	/**
	 * @return the grcTerm
	 */
	public String getGrcTerm() {
		return GrcTerm;
	}

	/**
	 * @param grcTerm the grcTerm to set
	 */
	public void setGrcTerm(String grcTerm) {
		GrcTerm = grcTerm;
	}

	/**
	 * @return the amortTerm
	 */
	public String getAmortTerm() {
		return AmortTerm;
	}

	/**
	 * @param amortTerm the amortTerm to set
	 */
	public void setAmortTerm(String amortTerm) {
		AmortTerm = amortTerm;
	}

	/**
	 * @return the strtDt
	 */
	public String getStrtDt() {
		return StrtDt;
	}

	/**
	 * @param strtDt the strtDt to set
	 */
	public void setStrtDt(String strtDt) {
		StrtDt = strtDt;
	}

	/**
	 * @return the mateDt
	 */
	public String getMateDt() {
		return MateDt;
	}

	/**
	 * @param mateDt the mateDt to set
	 */
	public void setMateDt(String mateDt) {
		MateDt = mateDt;
	}

	/**
	 * @return the loanAmt
	 */
	public String getLoanAmt() {
		return LoanAmt;
	}

	/**
	 * @param loanAmt the loanAmt to set
	 */
	public void setLoanAmt(String loanAmt) {
		LoanAmt = loanAmt;
	}

	/**
	 * @return the chanFlg
	 */
	public String getChanFlg() {
		return ChanFlg;
	}

	/**
	 * @param chanFlg the chanFlg to set
	 */
	public void setChanFlg(String chanFlg) {
		ChanFlg = chanFlg;
	}

	public String getAppFlowNo() {
		return appFlowNo;
	}

	public void setAppFlowNo(String appFlowNo) {
		this.appFlowNo = appFlowNo;
	}

}
